///*
// * File Name：BaseListenerWorkActivity.java
// * Copyright：Copyright 2008-2014 CiWong.Inc. All Rights Reserved.
// * Description： BaseListenerWorkActivity.java
// * Modify By：jejun
// * Modify Date：2014-2-14
// * Modify Type：Add
// */
//package com.ciwong.epaper.modules.evaluate.ui;
//
//import android.app.Activity;
//import android.content.Context;
//import android.content.DialogInterface;
//import android.os.Handler;
//import android.text.TextUtils;
//import android.util.Log;
//import android.widget.ListView;
//
//import com.ciwong.epaper.R;
//import com.ciwong.epaper.application.EApplication;
//import com.ciwong.epaper.modules.epaper.bean.Answer;
//import com.ciwong.epaper.modules.epaper.bean.WorkAnswers;
//import com.ciwong.epaper.modules.epaper.dao.EpaperDao;
//import com.ciwong.epaper.modules.evaluate.bean.AnswerRecorder;
//import com.ciwong.epaper.modules.evaluate.bean.RepeatAnswerInfo;
//import com.ciwong.epaper.modules.evaluate.bean.Sentence;
//import com.ciwong.epaper.modules.evaluate.bean.SentencesDetail;
//import com.ciwong.epaper.modules.evaluate.util.SentenceSpeechControler;
//import com.ciwong.epaper.util.BaseExtCallBack;
//import com.ciwong.epaper.util.EConstants;
//import com.ciwong.epaper.util.ESystem;
//import com.ciwong.epaper.util.LogOutUtil;
//import com.ciwong.epaper.util.SerializableManager;
//import com.ciwong.epaper.widget.evaluate.SentenceSpeechView;
//import com.ciwong.libs.audio.play.AudioPlayer;
//import com.ciwong.libs.utils.CWLog;
//import com.ciwong.libs.utils.CWSys;
//import com.ciwong.libs.utils.FileUtils;
//import com.ciwong.mobilelib.i.BaseCallBack;
//import com.ciwong.mobilelib.utils.ThreadTask;
//import com.ciwong.mobilelib.widget.CWDialog;
//import com.google.gson.reflect.TypeToken;
//import com.unisound.edu.oraleval.sdk.sep15.IOralEvalSDK;
//import com.unisound.edu.oraleval.sdk.sep15.OralEvalSDKFactory;
//
//import java.io.File;
//import java.util.ArrayList;
//import java.util.List;
//import java.util.UUID;
//import java.util.concurrent.CopyOnWriteArrayList;
//
///**
// * 句子（逐句跟读、独立跟读、选段背诵）基类
// *
// * @author res-jxliu
// * @version ciwong v.1.0 2014-2-14
// * @since ciwong v.1.0
// */
//public abstract class BaseListenerWorkActivity extends BaseSpeechActivity
//        implements SentenceSpeechControler.OnSpeechListener
//{
//    private static final String TAG = "BaseListenerWorkActivity";
//
//    private SentenceSpeechView speechView;
//
//    private SentenceSpeechControler speechPlayController;
//
//    // private View playAll;
//    // private AnimationDrawable anim;
//
//    private List<SentencesDetail> sentencesDetails;
//
//    private long startTime;
//
//    /**
//     * 获取听操作模式(逐句跟读、独立跟读、选段背诵)
//     *
//     * @return 操作模式
//     */
//    public abstract int getListenerOperateMode();
//
//    private ListView resultList;
//
//    @Override
//    protected int setView()
//    {
//        return R.layout.base_speech;
//    }
//
//    @Override
//    protected void findViews()
//    {
//        super.findViews();
//        speechView = (SentenceSpeechView) findViewById(R.id.speechView);
//        resultList = (ListView) findViewById(R.id.resultList);
//    }
//
//    private void showDialog()
//    {
//        if (!speechPlayController.isPause())
//        {
//            pause();
//        }
//        /*
//         * if (mDialog == null) {
//         */
//        CWDialog mDialog = new CWDialog(this);
//        // mDialog.setTitle(R.string.lear_title);
//        mDialog.setMessage(R.string.confirm_back_work);
//        mDialog.setPositiveButton(android.R.string.cancel, null);
//        mDialog.setNegativeButton(android.R.string.ok,
//                new DialogInterface.OnClickListener()
//                {
//
//                    @Override
//                    public void onClick(DialogInterface dialog, int which)
//                    {
//                        dialog.dismiss();
//                        AudioPlayer.getInstance().stop();
//                        // FileUtils.delete(NSystem.getAnswersMediaPath(uuid));
//                        finish();
//
//                    }
//                });
//        // }
//        mDialog.show();
//    }
//
//    /**
//     * 初始化库
//     *
//     */
//    private void initYzs()
//    {
//        showMiddleProgressBar(getTitleText());
//        speechPlayController = new SentenceSpeechControler(speechView);
//    }
//
//    /**
//     * 初始化数据
//     */
//    private void initData()
//    {
//        speechPlayController.setPlayRecord(isPlayRecord);
//        speechPlayController.setPlayAssess(isPlayAssess);
//        speechPlayController.setListenerMode(getListenerOperateMode());
//        speechPlayController.setOnSentenceSpeechListener(this);
//        speechPlayController.setListView(resultList);
//        speechPlayController.setRequContent(requirementContent);
//    }
//
//    @Override
//    protected void onResume()
//    {
//        super.onResume();
//        if (speechPlayController != null)
//        {
//            speechPlayController.setPlayRecord(isPlayRecord);
//            speechPlayController.setPlayAssess(isPlayAssess);
//        }
//    }
//
//    @Override
//    protected void loadData()
//    {
//        initYzs();
//        String saveUUid = CWSys.getSharedString(getUuidSaveKey(),
//                UUID.randomUUID().toString());
//        String path = ESystem.getAnswersPath() + File.separator + saveUUid;
//
//
//        if (new File(path).exists())
//        {
//            getSaveSentenceRecord(saveUUid);
//        }
//        else
//        {
//            clearRecord();
//            loadSentenceDetails(null);
//        }
//
////        //内存泄漏观察
////        RefWatcher refWatcher = EApplication.getRefWatcher(this);
////        refWatcher.watch(this);
//
//    }
//
//    /**
//     * 获取保存的句子记录(用户显示已跟读过的UI)
//     *
//     */
//    protected void getSaveSentenceRecord(final String saveUUid)
//    {
//        SerializableManager.getInstance().deSerialize(
//                ESystem.getSaveRecordKey(mDownLoadInfo, mModule, position,
//                        intentWorkId,
//                        SerializableManager.SerializeKey.SHARE_KEY_SENTENCE_RECORD),
//                new BaseExtCallBack(this,EApplication.getInstance().getUserInfoBase().getUserId()+"")
//                {
//
//
//                    @Override
//                    public void success(Object data)
//                    {
//                        ArrayList<Sentence> tempList = (ArrayList<Sentence>) data;
//                        if (tempList != null)
//                        {
//                            speechPlayController.sentences = tempList;
//                        }
//                        getSaveDoWorkRecord(saveUUid);
//                    }
//
//                    @Override
//                    public void failed(int errorCode, Object data)
//                    {
//                        failed(null);
//                        super.failed(errorCode,data);
//                    }
//
//                    @Override
//                    public void failed(Object data)
//                    {
//                        getSaveDoWorkRecord(saveUUid);
//                    }
//                });
//    }
//
//    /**
//     * 获取做作业记录
//     */
//    private void getSaveDoWorkRecord(final String saveUUid)
//    {
//        getSaveDoWorkRecord(new BaseExtCallBack(BaseListenerWorkActivity.this, EApplication.getInstance().getUserInfoBase().getUserId()+"")
//        {
//
//
//            @Override
//            public void success(Object data)
//            {
//                CopyOnWriteArrayList<AnswerRecorder> answerRecorderList;
//                if(data instanceof CopyOnWriteArrayList){
//                    answerRecorderList=(CopyOnWriteArrayList<AnswerRecorder>) data;
//                }else {
//                    answerRecorderList=new CopyOnWriteArrayList<AnswerRecorder>();
//                    if(null!=data) {
//                        answerRecorderList.addAll((ArrayList<AnswerRecorder>) data);
//                    }
//                }
//                if (answerRecorderList != null)
//                {
//                    speechPlayController.answerRecorders = answerRecorderList;
//                }
//
//                getSaveUserAnswerRecord(saveUUid);
//            }
//
//            @Override
//            public void failed(int errorCode, Object data)
//            {
//                super.failed(errorCode,data);
//                failed(null);
//            }
//
//            @Override
//            public void failed(Object data)
//            {
////                getSaveUserAnswerRecord(saveUUid);
//                //缓存失败导致获取失败，这时候应该清除脏数据重做 2016/11/3 --neo
//                CWLog.d(TAG,"#######获取做作业记录失败 ######");
//                String saveUuid = CWSys.getSharedString(getUuidSaveKey());
//                FileUtils.delete(ESystem.getAnswersUuidPath(saveUuid));
//                clearRecord( );
//                speechPlayController.sentences = new ArrayList<Sentence>();
//                speechPlayController.answerRecorders = new CopyOnWriteArrayList<AnswerRecorder>();
//                loadSentenceDetails(saveUUid);
//            }
//        });
//    }
//
//    /**
//     * 获取保存的用户答案记录
//     */
//    private void getSaveUserAnswerRecord(final String saveUUid)
//    {
//        getSaveUserAnswerList(new BaseExtCallBack(BaseListenerWorkActivity.this, EApplication.getInstance().getUserInfoBase().getUserId()+"")
//        {
//
//            @Override
//            public void success(Object data)
//            {// 继续学习按钮回调
//                CopyOnWriteArrayList<WorkAnswers<RepeatAnswerInfo>> saveAnswersList = (CopyOnWriteArrayList<WorkAnswers<RepeatAnswerInfo>>) data;
//                if (saveAnswersList != null)
//                {
//                    speechPlayController.userAnswerseList = saveAnswersList;
//                    speechPlayController.currentListenAndRepeatIndex = saveAnswersList
//                            .size();
//                    //退出重新进入的时候 记录当前跟读索引
//                    speechPlayController.cacheListenAndRepeatIndex=saveAnswersList
//                            .size();
//
//
//                }
//
//                loadSentenceDetails(saveUUid);
//
//            }
//
//            @Override
//            public void failed(int errorCode, Object data)
//            {
//                super.failed(errorCode, data);
//                failed(null);
//            }
//
//            @Override
//            public void failed(Object data)
//            {
//                String saveUuid = CWSys.getSharedString(getUuidSaveKey());
//                FileUtils.delete(ESystem.getAnswersUuidPath(saveUuid));
//                clearRecord();
//                speechPlayController.sentences = new ArrayList<Sentence>();
//                speechPlayController.answerRecorders = new CopyOnWriteArrayList<AnswerRecorder>();
//                loadSentenceDetails(saveUUid);
//            }
//        },speechPlayController.answerRecorders);
//    }
//
//    /**
//     * 刷新显示句子ui
//     */
//    private void refreshSentencesUi(String saveUUid)
//    {
//        showContent(saveUUid);
//        setNo(speechPlayController.currentListenAndRepeatIndex + 1,
//                sentencesDetails.size());
//
//        if (speechPlayController.currentListenAndRepeatIndex >= sentencesDetails
//                .size())
//        {// 说明已做完
//            speechPlayController.allComplete(false);
//        }
//    }
//
//    /**
//     * 获取句子
//     *
//     */
//    public void loadSentenceDetails(final String saveUUid)
//    {
//        String path = ESystem.getPackagesJsonPath(
//                mModule.getResourceList().get(position).getResourceFile());
//        EpaperDao.getInstance().getSerializableObjects(path,
//                new TypeToken<List<SentencesDetail>>()
//                {
//                }.getType(), new BaseExtCallBack(BaseListenerWorkActivity.this, EApplication.getInstance().getUserInfoBase().getUserId()+"")
//                {
//
//
//                    @Override
//                    public void success(final Object data)
//                    {
//                        super.success(data);
//                        List<SentencesDetail> tempSentences = (List<SentencesDetail>) data;
//
//                        if (!TextUtils.isEmpty(checkedResource))
//                        {
//                            // 有选题
//                            String[] checkedSentences = checkedResource
//                                    .split(",");
//                            sentencesDetails = new ArrayList<SentencesDetail>();
//                            for (String checkedVersionId : checkedSentences)
//                            {
//                                SentencesDetail sd = new SentencesDetail();
//                                sd.setVersionId(checkedVersionId);
//                                int index = tempSentences.indexOf(sd);
//                                if (index != -1)
//                                {
//                                    sentencesDetails
//                                            .add(tempSentences.get(index));
//                                }
//                            }
//                        }
//                        else
//                        {
//                            sentencesDetails = tempSentences;
//                        }
//
//                        if (CWLog.isDebug())
//                        {
////                            sentencesDetails = sentencesDetails.subList(0, 2);
////                            sentencesDetails.get(0).setName("I've learned a lot that way.");
//                        }
//                        if (sentencesDetails != null
//                                && !sentencesDetails.isEmpty())
//                        {
//                            initData();
//                            refreshSentencesUi(saveUUid);
//                        }
//                    }
//
//                    @Override
//                    public void failed(int errorCode, Object data)
//                    {
//                        super.failed(errorCode, data);
//                    }
//
//                    @Override
//                    public void failed(Object data)
//                    {
//                        finish();
//                        showToastError((int) data);
//                    }
//                }
//
//        );
//    }
//
//    private void showContent(String saveUUid)
//    {
//        boolean success = speechPlayController.setParagraphText(sentencesDetails,
//                mModule.getResourceList().get(position).getVersionId(),
//                saveUUid, stateImg, getUserInfoBase().getUserId(),
//                speechPlayController.sentences.isEmpty());
//        if (!success)
//        {
//            showToastError(R.string.speek_error);
//            return;
//        }
//
//    }
//
//    /**
//     * 恢复初始值
//     */
//    public void resetValue()
//    {
//        pause();
//        if (speechPlayController != null)
//        {
//            speechPlayController.stop();
//            speechPlayController.release();
//        }
//        allOrPause.setTag(false);
//        // speechPlayController.stopPlayAll();
//    }
//
//    @Override
//    protected void onPause()
//    {
//        super.onPause();
//        if (isLearn)
//        {
//            if (!speechPlayController.isPause())
//            {
//                pause();
//            }
//        }
//    }
//
//    @Override
//    protected void onDestroy()
//    {
//        super.onDestroy();
//        CWLog.d(TAG, "onDestroy");
//        mHandler.removeCallbacksAndMessages(null);
//        if (speechPlayController != null)
//        {
//            speechPlayController.stop();
//            speechPlayController.release();
//
//        }
//    }
//
//    @Override
//    public void goBack()
//    {
//        if (isResultShow)
//        {
//            slideDown(resultContainer);
//            speechBack.performClick();
//        }
//        else
//        {
//            if (isLearn)
//            {
//                showDialog();
//            }
//            else
//            {
//                // Intent intent = new Intent();
//                // intent.putExtra("is_complete", isComplete());
//                // intent.putExtra("item_my_work_child_score", item_my_work_child_score);
//                // setResult(RESULT_OK, intent);
//                // FileUtils.delete(NSystem.getAnswersMediaPath(uuid));
//                finish();
//            }
//        }
//        // }
//        // else
//        // {
//        // CWDialog dialog = new CWDialog(this);
//        // dialog.setTitle(R.string.warm_alert);
//        // dialog.setMessage(R.string.submit_un_complete);
//        // dialog.setNegativeButton(R.string.cancel, null).setPositiveButton(
//        // R.string.confirm, new DialogInterface.OnClickListener()
//        // {
//        // @Override
//        // public void onClick(DialogInterface dialog, int which)
//        // {
//        // // submitError = false;
//        // // hideProgress(0);
//        // }
//        // });
//        // dialog.show();
//        // }
//    }
//
//    private void goOn()
//    {
//        speechPlayController.start();
//        switchPlayState();
//    }
//
//    @Override
//    public void playOrPause(boolean isPlayAll)
//    {
//        try {
////            暂停播放操作过于频繁容易导致云之声内部崩溃
//
//            isLearn = true;
//
//            boolean start = true;
//            if (startTime == 0)
//            {
//                startTime = System.currentTimeMillis();
//            }
//            if (allOrPause.getTag() == null && !isPlayAll)
//            {
//                CWLog.i(TAG, "playOrPause  null");
//                workLong = 0;
//                startTimer();
//                start = speechPlayController.start();
//                if (start)
//                {
//                    switchPlayState();
//                    speechView.addSentenceToView(
//                            speechPlayController.currentListenAndRepeatIndex, true,
//                            false, isPlayAll);
//                }
//
//            }
////            else if ("continue".equals(allOrPause.getTag()))
////            {
////                startTimer();
////                goOn( );
////            }
////            else if ("restart".equals(allOrPause.getTag()))
////            {
////                CWLog.i(TAG, "playOrPause  restart");
////                super.speechAgain();
////                workLong = 0;
////                startTimer();
////                reStart();
////            }
////            else
////            {
////                boolean tag = getBooleanTag(allOrPause);
////                CWLog.i(TAG, "playOrPause  tag:" + tag);
////                if (!tag)
////                {
////                    startTimer();
////                    if (isPlayAll)
////                    {
////                        setNo(1, sentencesDetails.size());
////                        speechPlayController.playAll();
////                    }
////                    else
////                    {
////                        speechPlayController.stopPlayAll();
////                        //这里临时屏蔽
////                        speechPlayController.resume(allAfterPouse);
////                        //只要不是全文朗读 之后立马接着的那一次跟读都不会有问题
////                        allAfterPouse=false;
////                        //speechPlayController.resume();
////                        int index = speechPlayController.currentListenAndRepeatIndex + 1;
////                        index = index > sentencesDetails.size()
////                                ? sentencesDetails.size() : index;
////                        setNo(index, sentencesDetails.size());
////                    }
////                    switchPlayState();
////                    speechPlayController.refreshSpeechView(true);
////                }
////                else
////                {
////                    //全文通读后 暂停操作
////                    cancelTimer( );
////                    int index = speechPlayController.cacheListenAndRepeatIndex + 1;
////                    index = index > sentencesDetails.size()
////                            ? sentencesDetails.size() : index;
////                    setNo(index, sentencesDetails.size());
////                    pause( );
////                    speechPlayController.refreshSpeechView(false);
////                }
////            }
//        } catch (IllegalArgumentException e) {
//            showToastError(R.string.lllegal_operation2);
//        }
//
//    }
//
//    private void pause()
//    {
//        speechPlayController.pause();
//        switchPauseState();
//    }
//
//    private void reStart()
//    {
//        speechPlayController.reStart();
//        switchPlayState();
//    }
//
//    @Override
//    public void speechAgain()
//    {
//        speechPlayController.uuid = uuid = UUID.randomUUID().toString();
//        CWSys.setSharedString(getUuidSaveKey(), uuid);
//        super.speechAgain();
//        reStart();
//        slideDown(resultContainer);
//    }
//
//    protected Handler mHandler = new Handler();
//
//    @Override
//    public void onComplete(float score)
//    {
//        if (score != -1)
//        {
//            if (this.item_my_work_child_score < item_my_work_child_score)
//            {
//                this.item_my_work_child_score = item_my_work_child_score;
//            }
//            // switchRestartState();
//        }
//        else
//        {// 来自句子
//            mHandler.post(new Runnable()
//            {
//                @Override
//                public void run()
//                {
//                    int index = speechPlayController.currentListenAndRepeatIndex + 1;
//                    index = index > sentencesDetails.size()
//                            ? sentencesDetails.size() : index;
//                    setNo(index, sentencesDetails.size());
//                    speechPlayController.refreshSpeechView(true);
//                }
//            });
//        }
//    }
//
//    @Override
//    public void onListenerComplete()
//    {
//        switchPauseState();
//    }
//
//    @Override
//    public void onAllComplete(boolean isPlayAudio, Answer answer,
//                              List<WorkAnswers<RepeatAnswerInfo>> userAnswersList, String uuid,
//                              int score)
//    {
//        switchRestartState();
//        allComplete(score, isPlayAudio);
//        this.answer = answer;
//        this.answer.setActualScore(score);
//        this.userAnswersList = userAnswersList;
//        this.uuid = uuid;
//        startTime = 0;
//
//    }
//
//    @Override
//    public void setNormal(boolean isStart, boolean isPlayAll)
//    {
//        if (isStart)
//        {
//            if (isPlayAll)
//            {
//                // setNo(1, sentencesDetails.size());
//                // speechPlayController.stopPlayAll();
//                switchPlayState();
//            }
//            else
//            {
//                switchPlayState();
//
//                speechView.addSentenceToView(
//                        speechPlayController.currentListenAndRepeatIndex, true,
//                        false, isPlayAll);
//
//                int index = speechPlayController.currentListenAndRepeatIndex + 1;
//                index = index > sentencesDetails.size()
//                        ? sentencesDetails.size() : index;
//                setNo(index, sentencesDetails.size());
//            }
//        }
//        else
//        {
//            switchPauseState();
//        }
//    }
//
//    @Override
//    public void onSaveRecord(
//            CopyOnWriteArrayList<WorkAnswers<RepeatAnswerInfo>> userAnswersList,
//            CopyOnWriteArrayList<AnswerRecorder> answerRecorderList, String saveUuid)
//    {
//        saveDoWorkRecord(userAnswersList, answerRecorderList, saveUuid,
//                sentencesDetails.size());
//    }
//
//    @Override
//    public void onSaveSentenceRecord(ArrayList<Sentence> sentenceList)
//    {
//        String key = ESystem.getSaveRecordKey(mDownLoadInfo, mModule, position,
//                intentWorkId,
//                SerializableManager.SerializeKey.SHARE_KEY_SENTENCE_RECORD);
//        SerializableManager.getInstance().serialize(key, sentenceList);
//    }
//
//    @Override
//    public void startRecordAnim()
//    {
//        super.startRecordAnim();
//    }
//
//    @Override
//    public void stopRecordAnim()
//    {
//        super.stopRecordAnim();
//    }
//
//    /**
//     * 文件被删除了
//     */
//    public void notFile(){
//        String path = ESystem.getPackagesJsonPath(
//                mModule.getResourceList().get(position).getResourceFile());
//        File file=new File(path);
//        if(file.exists()){
//            File reParFile=file.getParentFile().getParentFile();
//            if(reParFile.exists()){
//                //递归删除该目录
//                ESystem.recurDelete(reParFile);
//            }
//        }
//        this.finish();
//    }
//
//
//}
